home *** CD-ROM | disk | FTP | other *** search
/ The Original Shareware 1.1 / The Original Shareware (WeMake CDs)(Volume 1.1)(CDs, Inc)(1993).iso / 18 / fpc103.zip / WORDS.SEQ < prev   
Text File  |  1988-02-29  |  4KB  |  135 lines

  1. \ WORDS.SEQ     The WORDS definition       Enhancements by Tom Zimmer
  2.  
  3. VARIABLE VYET   \ DID WE PRINT VOCABULARY YET
  4. VARIABLE VADDR  \ VOCABULARY NAME ADDRESS
  5.  
  6. : .VYET         ( --- ) VYET @ IF EXIT THEN
  7.                 VADDR @ CR ." --[ " .ID ."  ]--" VYET ON
  8.                 CR LMARGIN @ SPACES  ;
  9.  
  10. VARIABLE TOTALWORDS
  11.  
  12. : ?INNAME       ( NFA --- F1 )
  13.                 YSEG @ SWAP ?CS: HERE 100 + 31 CMOVEL
  14.                 HERE COUNT HERE 100 + COUNT 31 AND
  15.                 2DUP + 1- DUP C@ 127 AND SWAP C!
  16.                 SEARCH SWAP DROP ;
  17.  
  18. : ?CODENAME     ( NFA --- F1 )
  19.                 NAME> C@ DUP 232 <> SWAP 233 <> AND ;
  20.  
  21. 0 CONSTANT WORDTYPE
  22.  
  23. : ?WORDTYPE     ( NFA --- F1 )
  24.                 NAME> @REL>ABS WORDTYPE = ;
  25.  
  26. : ?TOTALWORDS   ( NFA --- FALSE )
  27.                 DROP FALSE
  28.                 TOTALWORDS INCR ;
  29.  
  30. DEFER ?W.NAME
  31.  
  32. : W.NAME        ( NFA --- )     \ Print name filtered by HERE
  33.                 DUP ?W.NAME
  34.                 IF      .VYET 17 ?LINE .ID #OUT @ 64 < IF TAB THEN
  35.                         TOTALWORDS INCR
  36.                 ELSE    DROP THEN    ;
  37.  
  38. : .VOCWORDS     ( A1 --- )
  39.                 DUP HERE 500 + #THREADS 2* CMOVE
  40.                 BODY> >NAME VADDR !     VYET OFF
  41.                 BEGIN   HERE 500 + #THREADS LARGEST DUP
  42.                         ?KEYPAUSE
  43.                 WHILE   DUP L>NAME W.NAME Y@ SWAP !
  44.                 REPEAT  2DROP ;
  45.  
  46. DEFER ?W.TEST   ' NOOP IS ?W.TEST
  47.  
  48. : ?*.*          ( --- )
  49.                 HERE 1+ " *.*" COMP 0=
  50.                 IF      ['] NOOP IS ?W.NAME
  51.                 THEN    ;
  52.  
  53. : ?CODE.*       ( --- )
  54.                 HERE 1+ " CODE.*" CAPS-COMP 0=
  55.                 IF      ['] ?CODENAME IS ?W.NAME
  56.                 THEN    ;
  57.  
  58. : ?:.*          ( --- )
  59.                 HERE 1+ " :.*" CAPS-COMP 0=
  60.                 IF      ['] ?*.* @REL>ABS =: WORDTYPE
  61.                         ['] ?WORDTYPE IS ?W.NAME
  62.                 THEN    ;
  63.  
  64. : ?VARIABLE.*   ( --- )
  65.                 HERE 1+ " VARIABLE.*" CAPS-COMP 0=
  66.                 IF      ['] TOTALWORDS @REL>ABS =: WORDTYPE
  67.                         ['] ?WORDTYPE IS ?W.NAME
  68.                 THEN    ;
  69.  
  70. : ?UVARIABLE.*  ( --- )
  71.                 HERE 1+ " UVARIABLE.*" CAPS-COMP 0=
  72.                 IF      ['] BASE @REL>ABS =: WORDTYPE
  73.                         ['] ?WORDTYPE IS ?W.NAME
  74.                 THEN    ;
  75.  
  76. : ?CONSTANT.*   ( --- )
  77.                 HERE 1+ " CONSTANT.*" CAPS-COMP 0=
  78.                 IF      ['] WORDTYPE @REL>ABS =: WORDTYPE
  79.                         ['] ?WORDTYPE IS ?W.NAME
  80.                 THEN    ;
  81.  
  82. : ?DEFER.*      ( --- )
  83.                 HERE 1+ " DEFER.*" CAPS-COMP 0=
  84.                 IF      ['] ?W.TEST @REL>ABS =: WORDTYPE
  85.                         ['] ?WORDTYPE IS ?W.NAME
  86.                 THEN    ;
  87.  
  88. : ?UDEFER.*     ( --- )
  89.                 HERE 1+ " UDEFER.*" CAPS-COMP 0=
  90.                 IF      ['] EMIT @REL>ABS =: WORDTYPE
  91.                         ['] ?WORDTYPE IS ?W.NAME
  92.                 THEN    ;
  93.  
  94. : ?TOTAL.*      ( --- )
  95.                 HERE 1+ " TOTAL.*" CAPS-COMP 0=
  96.                 IF      CR ." Not displaying, just counting the TOTAL "
  97.                         ['] ?TOTALWORDS IS ?W.NAME
  98.                 THEN    ;
  99.  
  100. \ WORDS <return>        print words in current vocabulary.
  101. \ WORDS <string>        print words containing string in all vocabularies.
  102. \ WORDS *.*             print all words of all vocabularies.
  103.  
  104. \ WORDS enhancements by Tom Zimmer
  105.  
  106.  : WORDS       ( <t1> -- )
  107.                 TOTALWORDS OFF
  108.                 SAVESTATE
  109.                78 RMARGIN !
  110.                15 TABSIZE !
  111.                   LMARGIN OFF
  112.                 CR ."  ** Press SPACE to pause, or ESC to exit ** "
  113.                 >IN @ SPAN @ <>
  114.                 IF      ['] ?INNAME IS ?W.NAME
  115.                         BL WORD DROP
  116.                         ?*.*            ?CODE.*         ?:.*
  117.                         ?VARIABLE.*     ?CONSTANT.*     ?DEFER.*
  118.                         ?UVARIABLE.*    ?UDEFER.*       ?TOTAL.*
  119.                         VOC-LINK @
  120.                         BEGIN   DUP #THREADS 2* - .VOCWORDS
  121.                                 @ DUP 0=
  122.                         UNTIL   DROP
  123.                 ELSE    ['] NOOP IS ?W.NAME
  124.                         CONTEXT @ .VOCWORDS
  125.                 THEN    CR TOTALWORDS @ U. ." Words displayed" CR
  126.                 RESTORESTATE ;
  127.  
  128. ROOT DEFINITIONS
  129.  
  130. ' WORDS ALIAS WORDS \ : WORDS    WORDS ;
  131.  
  132. FORTH DEFINITIONS
  133.  
  134.  
  135.